
#ifndef __W25QXX_H_
#define __W25QXX_H_

#ifdef __cplusplus
 extern "C" {
#endif
	 
#include "Compiler.h"	



//W25X系列/Q系列芯片列表

#define W25Q32 	0XEF15
#define W25Q64 	0XEF16
#define W25Q128	0XEF17
#define W25Q256 0XEF18

extern uint16_t NORFLASH_TYPE;					//定义W25QXX芯片型号

#define W25X_WriteEnable		0x06
#define W25X_WriteDisable		0x04
#define W25X_ReadStatusReg1		0x05
#define W25X_ReadStatusReg2		0x35
#define W25X_ReadStatusReg3		0x15
#define W25X_WriteStatusReg1    0x01
#define W25X_WriteStatusReg2    0x31
#define W25X_WriteStatusReg3    0x11
#define W25X_ReadData			0x03
#define W25X_FastReadData		0x0B
#define W25X_FastReadDual		0x3B
#define W25X_PageProgram		0x02
#define W25X_BlockErase			0xD8
#define W25X_SectorErase		0x20
#define W25X_ChipErase			0xC7
#define W25X_PowerDown			0xB9
#define W25X_ReleasePowerDown	0xAB
#define W25X_DeviceID			0xAB
#define W25X_ManufactDeviceID	0x90
#define W25X_JedecDeviceID		0x9F
#define W25X_Enable4ByteAddr    0xB7
#define W25X_Exit4ByteAddr      0xE9
#define W25X_SetReadParam		0xC0
#define W25X_EnterQPIMode       0x38
#define W25X_ExitQPIMode        0xFF

#define W25QXX_SECTOR_64K                   (uint32_t)(64 * 1024)        /* 1024 sectors of 64KBytes     */
#define W25QXX_SUBSECTOR_4K                 (uint32_t)(4  * 1024)        /* 16384 subsectors of 4KBytes  */

#define W25QXX_FLASH_SIZE                   (uint32_t)(128*1024*1024/8)  /* 512 Mbits => 64MBytes        */
#define W25QXX_PAGE_SIZE                    (uint32_t)256                /* 262144 pages of 256 Bytes    */
	

UINT8 	W25qxx_Init();
UINT8 	W25qxx_Read( UINT32 _addr,UINT32 _len,UINT8* _buff);
UINT8 	W25qxx_WriteSector(UINT32 _addr,UINT32 _len,UINT8* _buff);
UINT8 	W25qxx_Erase(UINT32 _addr);
	
	

#endif	
#ifdef __cplusplus
}
#endif




